import os.path
import sys

from loguru import logger

# 获取当前项目的绝对路径
root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# print(root_dir) # D:\HNPython\my_text2sql
log_dir = os.path.join(root_dir, "log")
if not os.path.exists(log_dir):
    os.mkdir(log_dir)


"""
自定义一个日志类，输出异常问题
Trace < Debug < Info < Success < Warning < Error < Critical
LOG_FILE打开，则会将日志进行保存
"""
# LOG_FILE = "translation.log"  # 存储日志的文件

class MyLogger:
    def __init__(self):
        # log_file_path = os.path.join(log_dir, LOG_FILE)
        self.logger = logger
        # 清空所有设置
        self.logger.remove()
        # 添加控制台输出的格式,sys.stdout为输出到屏幕;关于这些配置还需要自定义请移步官网查看相关参数说明
        self.logger.add(sys.stdout, level='DEBUG',
                        format="<black>{time:YYYYMMDD HH:mm:ss}</black> | "  # 颜色>时间
                               "{process.name} | "  # 进程名
                               "{thread.name} | "  # 线程名
                               "<cyan>{module}</cyan>.<cyan>{function}</cyan>"  # 模块名.方法名
                               ":<cyan>{line}</cyan> | "  # 行号
                               "<level>{level}</level>: "  # 等级
                               "<level>{message}</level>", )

        # 输出到文件的格式,注释下面的add',则关闭日志写入
        # self.logger.add(log_file_path, level='DEBUG', encoding='UTF-8',
        #                 format='{time:YYYYMMDD HH:mm:ss} - '  # 时间
        #                        "{process.name} | "  # 进程名
        #                        "{thread.name} | "  # 进程名
        #                        '{module}.{function}:{line} - {level} -{message}',  # 模块名.方法名:行号
        #                 rotation="10 MB",  # 日志文件生成的规则  rotation="1 week"  rotation="1 days"
        #                 retention=20  # 保留日志文件的规则
        #                 )

    def get_logger(self):
        return self.logger

log = MyLogger().get_logger()


@log.catch()  # 整个函数自动加上try， catch。自动捕获异常，并且通过日志打印
def test():
    print("""
    
    a
    sfdasf
    
    asf
    as
    asdfasf
    
    """)
    a = 5 / 0

def test2():
    try:
        a = 11 / 0
    except Exception as e:
        log.exception(e)

if __name__ == '__main__':
    test()




